<?php

/**
 * Category form.
 *
 * @package    cmsot
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class CategoryForm extends BaseCategoryForm
{
  /**
   * @see ItemsForm
   */
  public function configure() {
      
      $this->setWidget('parent', new sfWidgetFormDoctrineChoiceNestedSet(array(
          'model'     => 'Category',
          'add_empty' => true
      )));
      
      // Если текущая категория имеет родителя, выбрать его по умолчанию
      if ($this->getObject()->getNode()->hasParent()) {
          $this->setDefault('parent', $this->getObject()->getNode()->getParent()->getId());
      }
      
      $this->useFields(array(
          'name',
          'parent'
      ));
      
      $this->widgetSchema->setLabels(array(
          'name'   => 'Category',
          'parent' => 'Parent category'
      ));
      
      // Установить валидатор для нового виджета для предотвращения перемещения категории в один из своих потомков
      $this->setValidator('parent', new sfValidatorDoctrineChoiceNestedSet(array(
          'required' => false,
          'model'    => 'Category',
          'node'     => $this->getObject()
      )));
      
      $this->getValidator('parent')->setMessage('node', 'Категория не может быть потомком самой себя.');;
      
  }
}
